(function (factory) {
    'use strict';
    /*if (typeof define === 'function' && define.amd) {
        // Register as an anonymous AMD module:
        define([
            'jquery'
        ], factory);
    } else {
        // Browser globals:
        factory(window.jQuery);
    }*/
    factory(window.jQuery);
}(function ($) {
	$.zhCNCompare=function (str1,str2){
		function enStr1IsFront(enStr1,enStr2){
			if(enStr1==enStr2){
				return false;
			}
			var str1LowerCase=enStr1.toLowerCase();
			var str2LowerCase=enStr2.toLowerCase();
			if(str1LowerCase!=str2LowerCase){
				if(str1LowerCase<str2LowerCase){
					return true;
				}else{
					return false;
				}
			}else{
				if(enStr1>enStr2){
					return true;
				}else{
					return false;
				}
			}
		}
		function enStr2IsFront(enStr1,enStr2){
			if(enStr1==enStr2){
				return false;
			}
			var str1LowerCase=enStr1.toLowerCase();
			var str2LowerCase=enStr2.toLowerCase();
			if(str1LowerCase!=str2LowerCase){
				if(str2LowerCase<str1LowerCase){
					return true;
				}else{
					return false;
				}
			}else{
				if(enStr2>enStr1){
					return true;
				}else{
					return false;
				}
			}
		}
		function strArr(str){
			str+='';
			var arr=[];
			var prevIsChar=true;
			var hasChar=false;
			for(var i=0,len=str.length;i<len;i++){
				var character=str[i];
				if(character.charCodeAt(0) > 255){
					arr.push(character);
					hasChar=true;
					prevIsChar=true;
				}else{
					if(character==' '){
						prevIsChar=true;
					}else{
						if(prevIsChar){
							arr.push(character);
						}else{
							if(arr.length<1){
								arr.push[''];
							}
							arr[arr.length-1]+=character;
						}
						prevIsChar=false;
					}

				}
			}
			if(!hasChar){
				return [str];
			}
			return arr;
		}
		var strArr1=strArr(str1);
		var strArr2=strArr(str2);
		var strArrMinLen=Math.min(strArr1.length,strArr2.length);
		//var sortBefor=0;
		var str2Position='normal';
		var compareResult=0;
		for(var i=0;i<strArrMinLen;i++){
			var charStr1=strArr1[i]//.toLowerCase();
			var charStr2=strArr2[i]//.toLowerCase();
			var charEnStr1=Pinyin(charStr1);
			var charEnStr2=Pinyin(charStr2);


			if(charEnStr1!='' && charEnStr2==''){
				//console.log('str1为特殊字符')
				str2Position='before';
				break;
			}else if(charEnStr1=='' && charEnStr2!=''){
				//console.log('str2为特殊字符')
				str2Position='after';
				break;
			}else if(charEnStr1=='' && charEnStr2==''){
				//console.log('str1,str2为特殊字符')
				if(enStr1IsFront(charStr1,charStr2)){
					str2Position='after';
					break;
				}else if(enStr2IsFront(charStr1,charStr2)){
					str2Position='before';
					break;
				}
			}else{
				//console.log('str1,str2为中英字符',charEnStr1,charEnStr2,charEnStr1<charEnStr2)
				if(enStr1IsFront(charEnStr1,charEnStr2)){
					str2Position='after';
					break;
				}else if(enStr2IsFront(charEnStr1,charEnStr2)){
					str2Position='before';
					break;
				}
				//console.log('发音排序相等时')
				if(charStr1==charEnStr1 && charStr2!=charEnStr2){
					//console.log('str1为英文字符,str2为中文字符')
					str2Position='after';
				}else if(charStr1!=charEnStr1 && charStr2==charEnStr2){
					//console.log('str1为中文字符,str2为英文字符')
					str2Position='before';
				}else if(charStr1!=charEnStr1 && charStr2!=charEnStr2){
					//console.log('str1,str2都为中文字符')
					if(enStr1IsFront(charStr1,charStr2)){
						str2Position='after';
						break;
					}else if(enStr2IsFront(charStr1,charStr2)){
						str2Position='before';
						break;
					}
				}
			}
		}

		switch (str2Position){
			case 'before':
				break;
			case 'after':
				break;
			case 'normal':
				if(strArr1.length<strArr2.length){
					str2Position='after';
				}else if(strArr1.length>strArr2.length){
					str2Position='before';
				}
				break;
		}

		switch (str2Position){
			case 'before':
				compareResult=1;
				break;
			case 'after':
				compareResult=-1;
				break;
			case 'normal':
				compareResult=0;
				break;
		}

		//console.log("strArr1,strArr2",strArr1,strArr2,compareResult);
		return compareResult;
	}

}));